#include #include #include #include using std::string; using std::cout; using std::cin; using std::endl; struct FileHeader { char headerField[2]; unsigned int fileSize; void display(); }; void FileHeader::display() { cout << "headerField: " << headerField[0] << headerField[1] << endl; cout << "fileSize: " << fileSize << endl; } struct ImageHeader { void display(); }; void ImageHeader::display() { } struct Image { FileHeader fileHeader; ImageHeader imageHeader; // an array of pixels Image( char fileName[]); void displayHeaders(); }; Image::Image(char fileName[]) { std::ifstream fin(fileName, std::ios::binary); //first argument must be an address (char*) //file pointers - (put)p pointer, (get)g pointer fin.read(fileHeader.headerField,2); //(char*) type cast fin.read((char*)&fileHeader.fileSize,4); //fin.seekg(4); //skip the next four bytes //fin.seekg(4,std::ios::cur); //skip the next four bytes from current position //fin.seekg(4,std::ios::beg); //skip the next four bytes from begining of file //fin.seekg(-4,std::ios::end); //skip the next four bytes from begining of file fin.close(); } void Image::displayHeaders() { fileHeader.display(); imageHeader.display(); } void main() { Image image("untitled.bmp"); image.displayHeaders(); }